Skip to main content

An extremely fast Python package and project manager, written in Rust.

Project description

uv

uv image image image Actions status Discord

An extremely fast Python package and project manager, written in Rust.

Shows a bar chart with benchmark results.

Installing Trio's dependencies with a warm cache.

Highlights

uv is backed by Astral, the creators of Ruff.

Installation

Install uv with our standalone installers:

# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Or, from PyPI:

# With pip.
pip install uv
# Or pipx.
pipx install uv

If installed via the standalone installer, uv can update itself to the latest version:

uv self update

See the installation documentation for details and alternative installation methods.

Documentation

uv's documentation is available at docs.astral.sh/uv.

Additionally, the command line reference documentation can be viewed with uv help.

Features

Projects

uv manages project dependencies and environments, with support for lockfiles, workspaces, and more, similar to rye or poetry:

$ uv init example
Initialized project `example` at `/home/user/example`

$ cd example

$ uv add ruff
Creating virtual environment at: .venv
Resolved 2 packages in 170ms
   Built example @ file:///home/user/example
Prepared 2 packages in 627ms
Installed 2 packages in 1ms
 + example==0.1.0 (from file:///home/user/example)
 + ruff==0.5.0

$ uv run ruff check
All checks passed!

$ uv lock
Resolved 2 packages in 0.33ms

$ uv sync
Resolved 2 packages in 0.70ms
Audited 1 package in 0.02ms

See the project documentation to get started.

uv also supports building and publishing projects, even if they're not managed with uv. See the publish guide to learn more.

Scripts

uv manages dependencies and environments for single-file scripts.

Create a new script and add inline metadata declaring its dependencies:

$ echo 'import requests; print(requests.get("https://astral.sh"))' > example.py

$ uv add --script example.py requests
Updated `example.py`

Then, run the script in an isolated virtual environment:

$ uv run example.py
Reading inline script metadata from: example.py
Installed 5 packages in 12ms
<Response [200]>

See the scripts documentation to get started.

Tools

uv executes and installs command-line tools provided by Python packages, similar to pipx.

Run a tool in an ephemeral environment using uvx (an alias for uv tool run):

$ uvx pycowsay 'hello world!'
Resolved 1 package in 167ms
Installed 1 package in 9ms
 + pycowsay==0.0.0.2
  """

  ------------
< hello world! >
  ------------
   \   ^__^
    \  (oo)\_______
       (__)\       )\/\
           ||----w |
           ||     ||

Install a tool with uv tool install:

$ uv tool install ruff
Resolved 1 package in 6ms
Installed 1 package in 2ms
 + ruff==0.5.0
Installed 1 executable: ruff

$ ruff --version
ruff 0.5.0

See the tools documentation to get started.

Python versions

uv installs Python and allows quickly switching between versions.

Install multiple Python versions:

$ uv python install 3.10 3.11 3.12
Searching for Python versions matching: Python 3.10
Searching for Python versions matching: Python 3.11
Searching for Python versions matching: Python 3.12
Installed 3 versions in 3.42s
 + cpython-3.10.14-macos-aarch64-none
 + cpython-3.11.9-macos-aarch64-none
 + cpython-3.12.4-macos-aarch64-none

Download Python versions as needed:

$ uv venv --python 3.12.0
Using Python 3.12.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

$ uv run --python pypy@3.8 -- python --version
Python 3.8.16 (a9dbdca6fc3286b0addd2240f11d97d8e8de187a, Dec 29 2022, 11:45:30)
[PyPy 7.3.11 with GCC Apple LLVM 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>>

Use a specific Python version in the current directory:

$ uv python pin 3.11
Pinned `.python-version` to `3.11`

See the Python installation documentation to get started.

The pip interface

uv provides a drop-in replacement for common pip, pip-tools, and virtualenv commands.

uv extends their interfaces with advanced features, such as dependency version overrides, platform-independent resolutions, reproducible resolutions, alternative resolution strategies, and more.

Migrate to uv without changing your existing workflows — and experience a 10-100x speedup — with the uv pip interface.

Compile requirements into a platform-independent requirements file:

$ uv pip compile docs/requirements.in \
   --universal \
   --output-file docs/requirements.txt
Resolved 43 packages in 12ms

Create a virtual environment:

$ uv venv
Using Python 3.12.3
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate

Install the locked requirements:

$ uv pip sync docs/requirements.txt
Resolved 43 packages in 11ms
Installed 43 packages in 208ms
 + babel==2.15.0
 + black==24.4.2
 + certifi==2024.7.4
 ...

See the pip interface documentation to get started.

Platform support

See uv's platform support document.

Versioning policy

See uv's versioning policy document.

Contributing

We are passionate about supporting contributors of all levels of experience and would love to see you get involved in the project. See the contributing guide to get started.

FAQ

How do you pronounce uv?

It's pronounced as "you - vee" (/juː viː/)

How should I stylize uv?

Just "uv", please. See the style guide for details.

Acknowledgements

uv's dependency resolver uses PubGrub under the hood. We're grateful to the PubGrub maintainers, especially Jacob Finkelman, for their support.

uv's Git implementation is based on Cargo.

Some of uv's optimizations are inspired by the great work we've seen in pnpm, Orogene, and Bun. We've also learned a lot from Nathaniel J. Smith's Posy and adapted its trampoline for Windows support.

License

uv is licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in uv by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any additional terms or conditions.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uv-0.9.3.tar.gz (3.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

uv-0.9.3-py3-none-win_arm64.whl (19.8 MB view details)

Uploaded Python 3Windows ARM64

uv-0.9.3-py3-none-win_amd64.whl (21.3 MB view details)

Uploaded Python 3Windows x86-64

uv-0.9.3-py3-none-win32.whl (19.3 MB view details)

Uploaded Python 3Windows x86

uv-0.9.3-py3-none-musllinux_1_1_x86_64.whl (21.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

uv-0.9.3-py3-none-musllinux_1_1_i686.whl (20.6 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

uv-0.9.3-py3-none-musllinux_1_1_armv7l.whl (20.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARMv7l

uv-0.9.3-py3-none-manylinux_2_31_riscv64.whl (21.2 MB view details)

Uploaded Python 3manylinux: glibc 2.31+ riscv64

uv-0.9.3-py3-none-manylinux_2_28_aarch64.whl (20.1 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

uv-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

uv-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (21.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

uv-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (22.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

uv-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (22.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64

uv-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (21.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

uv-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (20.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

uv-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (20.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64musllinux: musl 1.1+ ARM64

uv-0.9.3-py3-none-macosx_11_0_arm64.whl (18.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

uv-0.9.3-py3-none-macosx_10_12_x86_64.whl (19.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

uv-0.9.3-py3-none-linux_armv6l.whl (20.6 MB view details)

Uploaded Python 3

File details

Details for the file uv-0.9.3.tar.gz.

File metadata

  • Download URL: uv-0.9.3.tar.gz
  • Upload date:
  • Size: 3.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.2

File hashes

Hashes for uv-0.9.3.tar.gz
Algorithm Hash digest
SHA256 a290a1a8783bf04ca2d4a63d5d72191b255dfa4cc3426a9c9b5af4da49a7b5af
MD5 0ec986ffdc3e4ebfebe66e0b19bb5bd8
BLAKE2b-256 0ddc4a0e01bcb38c756130c8118a8561d4bf0a0bb685b70ad11e8f40a0cbfa10

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-win_arm64.whl.

File metadata

  • Download URL: uv-0.9.3-py3-none-win_arm64.whl
  • Upload date:
  • Size: 19.8 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.2

File hashes

Hashes for uv-0.9.3-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7a63c2514833f80a006feef9b8adce1380e06a7945ceb80928d43ac8693b4dd6
MD5 29503085f81bd78e3ccedafd976b1bfa
BLAKE2b-256 67e7485f57f3415593e4e96b312aa168b9ce6b66d72e89c8b1cb59b683522672

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-win_amd64.whl.

File metadata

  • Download URL: uv-0.9.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 21.3 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.2

File hashes

Hashes for uv-0.9.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 55516bf85c44a00b948472ddda80d7c5cd9990e9b5c085dc5005da93f40266a7
MD5 944c9e0d55f90a7668a38360abe93866
BLAKE2b-256 87cd667f6249a9a3a8d2d7ba1aa72db6b1fc6cdaf7b0d7aeda43478702e2a13e

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-win32.whl.

File metadata

  • Download URL: uv-0.9.3-py3-none-win32.whl
  • Upload date:
  • Size: 19.3 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.2

File hashes

Hashes for uv-0.9.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 5092d8ac9d0ff7d158ac0d834b27b39b7f23fdbf71865ac8b8bdb55db6f3f5c5
MD5 9fbe9257d2c5633763664c424d13ca89
BLAKE2b-256 4e7e548f5c58b7130b62ef75ffc120919b45698179bc0efae0fb6bd32be2d634

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ccf4cd2e1907fb011764f6f4bc0e514c500e8d300288f04a4680400d5aa205ec
MD5 207e3adb40b934fc086cf0fe189d9004
BLAKE2b-256 bc044aaf90e031f0735795407a208c9528f85b0b27b63409abe4ee3bee0d4527

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-musllinux_1_1_i686.whl.

File metadata

  • Download URL: uv-0.9.3-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 20.6 MB
  • Tags: Python 3, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.2

File hashes

Hashes for uv-0.9.3-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 214bb2fb4d87a55e2ba2bc038a8b646a24ec66980528d2ed1e6e7d0612d246e1
MD5 7faafdaf018b87fa1ab69145d139678e
BLAKE2b-256 052de1d8f74ec9d95daf57f3c53083c98a2145ee895a4f8502c61c9013c9bf5a

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-musllinux_1_1_armv7l.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-musllinux_1_1_armv7l.whl
Algorithm Hash digest
SHA256 8844103e0b4074821fb2814abf30af59d66f33b6ca1bb2276dd37d4e5997c292
MD5 10eba02f730fff3b73a5caa95fb73993
BLAKE2b-256 971faf8ced7f6c8f6af887c52369088058ecae92ff21819e385531023f9ec923

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_31_riscv64.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_31_riscv64.whl
Algorithm Hash digest
SHA256 71faefa9805ccf3f2db645ae27c9e719e47aaa8781e43dfa3760d993aadecb8c
MD5 7b81b61fd4340574be8db0ff62253524
BLAKE2b-256 2dfcea673d1c68915ea53f1ab7e134b330a2351c543f06e9d0009b4f27cc3057

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2e75ce14c9375e7e99422d5383fb415e8f0eab9ebdcdfba45756749dee0c42b2
MD5 96fee443a0dfa8b709acf13c231fb48a
BLAKE2b-256 1d62508c20f8dbdd2342cc4821ab6f41e29a9b36e2a469dfb5cbbd042e15218c

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73ae4bbc7d555ba1738da08c64b55f21ab0ea0ff85636708cebaf460d98a440d
MD5 056d8686296b3ffc6ca2d5cf6cc24e09
BLAKE2b-256 8245488417c6c0127c00bcdfac3556ae2ea0597df8245fe5f9bcfda35ebdbe85

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 117c5921bcfdac04b88211ee830c6c7e412eaf93a34aa3ad4bb3230bc61646aa
MD5 d11b47ae952000d51551d14baf86f493
BLAKE2b-256 0d99af8b0cd2c958e8cb9c20e6e2d417de9476338a2b155643492a8ee2baf077

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 36df7eb562b103e3263a03df1b04cee91ee52af88d005d07ee494137c7a5782a
MD5 aa006575de7084ba2b8da424fb7e7c7e
BLAKE2b-256 989266d660414aed123686bf9a2a3ea167967b847b97c08cacd13d6b2b6d1267

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 32694e64d6e4ea44b647866c4240659f3964b0317e98f539b73915dbcca7d973
MD5 9ac449a0e7f58242aa4f32a24b166d07
BLAKE2b-256 30fb768647a31622c2c1da7a9394eaab937e2e7ca0e8c983ca3d1918ec623620

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 970ac8428678b92eddb990dc132d75e893234bb1b809e87b90a4acd96bb054e4
MD5 e1db51b49e3326fcdd43f97b08b3fe98
BLAKE2b-256 dd55553e90bc2b881f168de9cd57f9e0b0464304a12aee289e71b54c42559e1a

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 73dbd91581a82e53bb4352243d7bc491cf78ac3ebb951d95bb8b7964e5ee0659
MD5 6afeb539be6a4687b4116442172c8344
BLAKE2b-256 4015f190004dd855b443cfc1cc36edb1765e6cd0b6b340a50bb8015531dfff2e

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 406ab1a8b313b4b3cf67ad747fb8713a0c0cf3d3daf11942b5a4e49f60882339
MD5 5d1ee45853f1b7934ba0636a0a27a9b9
BLAKE2b-256 0719bb8aa38b4441e03c742e71a31779f91b42d9db255ede66f80cdfdb672618

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 741e80c4230e1b9a5d0869aca2fb082b3832b251ef61537bc9278364b8e74df2
MD5 1b772c8890d679121906eac8edf1e84b
BLAKE2b-256 16256df8be6cd549200e80d19374579689fda39b18735afde841345284fb113d

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 596a982c5a061d58412824a2ebe2960b52db23f1b1658083ba9c0e7ae390308a
MD5 012c27edf3ccf7593f45a7737e8e76a4
BLAKE2b-256 d01a8e68d0020c29f6f329a265773c23b0c01e002794ea884b8bdbd594c7ea97

See more details on using hashes here.

File details

Details for the file uv-0.9.3-py3-none-linux_armv6l.whl.

File metadata

File hashes

Hashes for uv-0.9.3-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 7b1b79dd435ade1de97c6f0b8b90811a6ccf1bd0bdd70f4d034a93696cf0d0a3
MD5 cc492edebc1797d2e883a59582b68465
BLAKE2b-256 c3ad194e550062e4b3b9a74cb06401dc0afd83490af8e2ec0f414737868d0262

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page